/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.om.impl;

import fr.generali.accueilclient.client.om.ITelephone;

/**
 * Implémentation d'un {@link ITelephone}
 * 
 * @author selrhazala
 */
public class Telephone implements ITelephone, Cloneable {

    /**
     * numéro d'ordre du téléphone
     */
    private String numOrdre;

    /**
     * L'indicatif du téléphone
     */
    private String indicatif;

    /**
     * Le numéro de téléphone
     */
    private String numero;

    /**
     * La precision du téléphone
     */
    private String precision;

    /**
     * Le numéro de poste
     */
    private String numeroPoste;

    /**
     * Le type de téléphone
     */
    private String type;

    /**
     * L'indicateur de téléphone principal
     */
    private boolean principal;

    /**
     * L'indicateur de téléphone professionnel
     */
    private boolean professionnel;

    /**
     * Téléphone sur liste rouge
     */
    private boolean listeRouge;

    /**
     * Téléphone confidentiel
     */
    private boolean confidentiel;

    /**
     * {@inheritDoc}
     */
    public String getIndicatif() {
        return indicatif;
    }

    /**
     * {@inheritDoc}
     */
    public void setIndicatif(String indicatif) {
        this.indicatif = indicatif;
    }

    /**
     * {@inheritDoc}
     */
    public String getNumero() {
        return numero;
    }

    /**
     * {@inheritDoc}
     */
    public void setNumero(String numero) {
        this.numero = numero;
    }

    /**
     * {@inheritDoc}
     */
    public String getNumeroPoste() {
        return numeroPoste;
    }

    /**
     * {@inheritDoc}
     */
    public void setNumeroPoste(String numeroPoste) {
        this.numeroPoste = numeroPoste;
    }

    /**
     * @return the precision
     */
    public String getPrecision() {
        return precision;
    }

    /**
     * @param precision the precision to set
     */
    public void setPrecision(String precision) {
        this.precision = precision;
    }

    /**
     * {@inheritDoc}
     */
    public String getType() {
        return type;
    }

    /**
     * {@inheritDoc}
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * {@inheritDoc}
     */
    public boolean isPrincipal() {
        return principal;
    }

    /**
     * {@inheritDoc}
     */
    public void setPrincipal(boolean principal) {
        this.principal = principal;
    }

    /**
     * {@inheritDoc}
     */
    public boolean isProfessionnel() {
        return professionnel;
    }

    /**
     * {@inheritDoc}
     */
    public void setProfessionnel(boolean professionnel) {
        this.professionnel = professionnel;
    }

    /**
     * {@inheritDoc}
     */
    public String getNumOrdre() {
        return numOrdre;
    }

    /**
     * {@inheritDoc}
     */
    public void setNumOrdre(String numOrdre) {
        this.numOrdre = numOrdre;
    }

    /**
     * {@inheritDoc}
     */
    public boolean isListeRouge() {
        return listeRouge;
    }

    /**
     * {@inheritDoc}
     */
    public void setListeRouge(boolean listeRouge) {
        this.listeRouge = listeRouge;
    }

    /**
     * {@inheritDoc}
     */
    public boolean isConfidentiel() {
        return confidentiel;
    }

    /**
     * {@inheritDoc}
     */
    public void setConfidentiel(boolean confidentiel) {
        this.confidentiel = confidentiel;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Telephone) {
            ITelephone telephone = (ITelephone ) obj;
            if (this.numOrdre == telephone.getNumOrdre()
                            || (this.numOrdre != null && this.numOrdre.equals(telephone.getNumOrdre()))) {
                return true;
            }
        }
        return false;

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 31 * hash + (null == this.numOrdre ? 0 : this.numOrdre.hashCode());
        return hash;
    }

    /**
     * @see java.lang.Object#clone() . {@inheritDoc}
     * @return telephone
     * 
     * @throws CloneNotSupportedException CloneNotSupportedException
     */
    @Override
    public ITelephone clone() throws CloneNotSupportedException {

        final ITelephone telephone = ITelephone.class.cast(super.clone());

        return telephone;
    }

    /**
     * {@inheritDoc}
     */
    public ITelephone createCloneTelephone() throws CloneNotSupportedException {

        return clone();
    }
}
